﻿#region Creditos

/* Autor: Edilberto Sánchez Forero	*/
/* Email: esanchezfo@gmail.com		*/
/* Licencia: Propietario			*/
/* País: Colombia, Bogotá			*/

#endregion

#region Librerias

using System.ServiceModel;

using ESF.SSO.Core.Entities;
using System.Collections.Generic;
using ESF.General;
using ESF.WCF;
using System;
using ESF.SSO.Core.Entities.Log;
using ESF.General.Entity;
using ESF.SSO.Core.Entities.BasicReferences;

#endregion


namespace ESF.SSO.Service.Client
{
	[ServiceContract (Namespace="http://sso.esf.com")]
	public interface ISSOService
	{
		#region User Sign In
		
		[OperationContract]
		User SignInByIdentificationCredentials (User pUser);
		
		[OperationContract]
		User SignInByCredentials (User pUser);
		
		[OperationContract]
		List<UserMenuItem> GetUserMenu (User pUser, BasicReference pApplication);
		
		[OperationContract]
		List<BasicReference> GetUserRights (User pUser);

		[OperationContract]
		BasicReference GetUserRightValue (User pUser, string pRightCode);

		[OperationContract]
		void SetUserRightValue (User pUser, BasicReference pRight);
		
		#endregion
		
		
		#region User Close Session
		
		[OperationContract]
		void CloseSession (UserSessionLog pUserSessionLog);
		
		[OperationContract]
		void CloseSessionByCredentials (User pUser);
		
		[OperationContract]
		void CloseSessionByIdentificationCredentials (User pUser);
		
		#endregion
		
		
		#region User Sign Up
		
		[OperationContract]
		void SignUp (User pUser);
		
		#endregion
		
		
		#region Consulta de Sesion
		
		[OperationContract]
		User GetUserFromSessionID (string pSessionID);
		
		#endregion
		
		
		#region Lists
		
		[OperationContract]
		List<BasicReference> ListBasicReference (BasicReferenceType pBasicReferenceType);
		
		
		[OperationContract]
		List<UserMenuItem> GetUserApplicationList (User pUser);
	
		#endregion
		
		
		#region BasicReference	
		
		[OperationContract]
		BasicReference GetBasicReferenceByCode (string pBasicReferenceCode);
		
		[OperationContract]
		BasicReference GetBasicReferenceByID (int pBasicReferenceID);
		
		#endregion
		
		
		#region Files
		
		//[OperationContract]
		//List<FileReference> GetUserMenuImages (User pUser, BasicReference pApplication);
		
		#endregion
	}
}